package de.herzog.bbp.view;

import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.List;
import java.util.function.Function;

import de.herzog.bbp.view.bean.SpielBean;

public class SpielBeanSorter {

	private static final SimpleDateFormat DF = new SimpleDateFormat("YYYYMMDD");

	private String label;
	private Comparator<SpielBean> comparator;

	private SpielBeanSorter(String label, Function<SpielBean, String> sortMapper) {
		this.label = label;
		this.comparator = new Comparator<SpielBean>() {
			@Override
			public int compare(SpielBean spielBean1, SpielBean spielBean2) {
				return sortMapper.apply(spielBean1).compareTo(sortMapper.apply(spielBean2));
			}
		};
	}

	public List<SpielBean> sort(List<SpielBean> list) {
		list.sort(comparator);
		return list;
	}

	public String toString() {
		return label;
	}

	public static final SpielBeanSorter KLASSE_SORT = new SpielBeanSorter("Klasse", //
			spielBean -> spielBean.getKlasse() + DF.format(spielBean.getDatum()) + spielBean.getZeit()
					+ spielBean.getHeimVerein());

	public static final SpielBeanSorter HEIMVEREIN_SORT = new SpielBeanSorter("Heimverein", //
			spielBean -> spielBean.getHeimVerein() + DF.format(spielBean.getDatum()) + spielBean.getHalleNummer()
					+ spielBean.getZeit());
}
